import axios from 'axios'
import router from '../router/index'
import {
    Message
} from 'element-ui'
axios.interceptors.request.use(function(config) {
        // 在发送请求之前做些什么
        // 判断是否存在token,如果存在将每个页面header添加token
        if (window.localStorage.getItem("token")) {
            config.headers.common['Access-Token'] = window.localStorage.getItem("token");
        }
        return config
    })
    // 添加request拦截器
axios.interceptors.request.use(function(config) {
    // Do something before request is sent
    return config;
}, function(error) {
    // Do something with request error
    return Promise.reject(error);
});

// 添加response的拦截器
axios.interceptors.response.use(function(response) {
    // Do something with response data
    return response;
}, function(error) {
    // Do something with response error
    return Promise.reject(error);
});

router.beforeEach((to, from, next) => {

    // 获取存储localStorage的token
    let token = window.localStorage.getItem('token')
        // 获取存储token的开始时间
    const tokenStartTime = window.localStorage.getItem('tokenStartTime')
        // 后台给出的token有效时间，一个星期 单位 是秒
        // 我们自己定义6天过期，让用户重新登录一下， 用户总不可能在一个页面挂机一天吧
    const timeOver = 6 * 24 * 3600 * 1000

    // const timeOver = 10000
    // 当前时间
    let date = new Date().getTime()
        // 如果大于说明是token过期了
    if (date - tokenStartTime > timeOver) {
        token = null
    }
    // 如果token过期了
    if (!token) {
        if (to.path == '/login') return next()
            // 注意要import element的Message组件
        Message.error("登录状态过期，请重新登录")
        return next('/login')
            // 如果token没有过期，又是选择了登录页面就直接重定向到首页，不需要重新输入账户密码
    } else if (to.path == '/login') {
        return next('/home')
    }
    next()

})

// if (process.env.NODE_ENV === "production") {
//     axios.defaults.baseURL = "weeklyreport.allyotb.com" //生产模式 不同于 开发时
// }